//
//  RAPMainInterfaceTabBar.swift
//  COPYCAT-Weibo
//
//  Created by 闫萌 on 12/27/15.
//  Copyright © 2015 RendezvousAuParadis. All rights reserved.
//

import UIKit

class RAPMainInterfaceTabBar: UITabBar {
    
    // MARK: - 属性
    var midButtonClickedCallBack: (() -> ())?
    // MARK: - 系统方法
    override init(frame: CGRect) {
        // 调用super之前初始化自己的属性
        super.init(frame: frame)
        // Swift中Self的使用调用super之后，修改父类的属性
        backgroundImage = UIImage(named: "tabbar_background")

        
        // 设置并添加中间按钮
        setupMidButton()
    }
    
    required init?(coder aDecoder: NSCoder) {
        // 这个方法没有实现，在被使用时会主动抛出错误
        fatalError("init(coder:) has not been implemented")
    }

    
    private func setupMidButton() {
        // 添加一个中间按钮
        let midButton = UIButton(type: .Custom)
        // 设置背景
        midButton.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: .Normal)
        midButton.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: .Highlighted)
        // 设置图片
        midButton.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: .Normal)
        midButton.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: .Highlighted)
        
        // 设置frame
        midButton.sizeToFit()
        midButton.center = CGPoint(x: CGRectGetMidX(bounds), y: CGRectGetMidY(bounds))
        
        // 添加动作方法
        midButton.addTarget(self, action: "midButtonClicked", forControlEvents: .TouchUpInside)
        
        addSubview(midButton)
        
    }
    
    @objc private func midButtonClicked() {
        // 判读回调闭包是否存在
        if let callBack = midButtonClickedCallBack {
            callBack()
        }
    }
    
    /**
    在这个方法中排布子控控件
    */
    override func layoutSubviews() {
        super.layoutSubviews()
        
        let viewClass = NSClassFromString("UITabBarButton")
        // 子控件的平均宽度
        let avgW = frame.width * 0.2
        
        var idx = 0
        
        for view in subviews {
            if view.isKindOfClass(viewClass!) {
                view.frame.size.width = avgW
                view.frame.origin.x = CGFloat(idx) * avgW
                idx++
                // 第2个时，中间让出一个位置，给compose button
                if idx == 2 {
                    idx++
                }
            }
        }
        
    }

}
